/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BackEnd;

import Dao.EstadoUsuarioDao;
import Dao.EstadoUsuarioValueObject;
import Dao.PkId;
import BackEnd.Exceptions.NotExistRegisterException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author emmanuel
 */
public class EstadoUsuario {

    private long id;
    private String nombre;
    private String descripcion;
    public static EstadoUsuario NUEVO = getEstadoUsuario("nuevo");

    /**
     * Constructor con paramentros
     * @param nombre
     * @param descripcion
     */
    public EstadoUsuario(String nombre, String descripcion) {
        this.id = 0;
        this.nombre = nombre;
        this.descripcion = descripcion;
    }

    /**
     * Constructor sin parámetros
     */
    public EstadoUsuario() {
        nombre="";
        descripcion="";
    }

    /**
    * @return the id
    */
    public long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * @param descripcion the descripcion to set
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public boolean abrir(long id) {
        EstadoUsuarioDao eudao = new EstadoUsuarioDao();
        PkId euPk = new PkId((int)id);
        EstadoUsuarioValueObject euvo;
        try {
            euvo = (EstadoUsuarioValueObject) eudao.traer(euPk);
            if (euvo != null){
                this.id = euvo.getId();
                this.nombre = euvo.getNombre();
                return true;
            }
            else
                return false;
        } catch (NotExistRegisterException ex) {
            Logger.getLogger(EstadoUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }

    }

    public void setEstado(EstadoUsuario nuevo) {
        this.id = nuevo.id;
        this.nombre = nuevo.nombre;
        this.descripcion = nuevo.descripcion;
    }

    private static EstadoUsuario getEstadoUsuario(String string) {
        EstadoUsuarioDao eudao = new EstadoUsuarioDao();
        EstadoUsuarioValueObject euvo[];
        try {
            euvo = (EstadoUsuarioValueObject[]) eudao.mostrarConsulta("select * from EstadoUsuario where nombre="+string);
            EstadoUsuario eu = null;
            if (euvo.length > 0){
                eu = new EstadoUsuario();
                eu.id = euvo[0].getId();
                eu.nombre = euvo[0].getNombre();

            }
            return eu;
        } catch (NotExistRegisterException ex) {
            Logger.getLogger(EstadoUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }

    }

    public static ArrayList<EstadoUsuario> getAllUserState() {
        EstadoUsuarioDao eudao = new EstadoUsuarioDao();
        EstadoUsuarioValueObject euvo[];
        try {
            euvo = (EstadoUsuarioValueObject[]) eudao.mostrarConsulta("select * from EstadoUsuario");
            if(euvo.length > 0){
                EstadoUsuario eu = new EstadoUsuario();
                ArrayList<EstadoUsuario> lista = new ArrayList<EstadoUsuario>();
                for(int i = 0 ; i <= euvo.length ; i++){
                    eu.setId(euvo[i].getId());
                    eu.setNombre(euvo[i].getNombre());
                    eu.setDescripcion(euvo[i].getDescripcion());
                    lista.add(eu);
                }
                return lista;
            }
            else
                return null;
        } catch (NotExistRegisterException ex) {
            Logger.getLogger(EstadoUsuario.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }

    }
}
